﻿$(document).ready(function () {

    //Funciones para el pop-up de Login//
    $('a.login-window').click(function () {

        //Getting the variable's value from a link 
        var loginBox = $(this).attr('href');

        //Fade in the Popup
        $(loginBox).fadeIn(300);

        //Set the center alignment padding + border see css style
        var popMargTop = ($(loginBox).height() + 24) / 2;
        var popMargLeft = ($(loginBox).width() + 24) / 2;

        $(loginBox).css({
            'margin-top': -popMargTop,
            'margin-left': -popMargLeft
        });

        // Add the mask to body
        $('body').append('<div id="mask"></div>');
        $('#mask').fadeIn(300);

        return false;
    });

    // When clicking on the button close or the mask layer the popup closed
    $('a.close, #mask').live('click', function () {
        cerrarPopUp();
        return false;
    });

    //--------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------//

    //Funciones para el pop-up de Registro//
    $('a.register-window').click(function () {

        //Getting the variable's value from a link 
        var registerBox = $(this).attr('href');

        //Fade out pop-out de Login
        $("#login-box").fadeOut(300);
        //Fade in pop-up de Registro
        $(registerBox).fadeIn(300);

        //Set the center alignment padding + border see css style
        var popMargTop = ($(registerBox).height() + 24) / 2;
        var popMargLeft = ($(registerBox).width() + 24) / 2;

        $(registerBox).css({
            'margin-top': -popMargTop,
            'margin-left': -popMargLeft
        });

        // Add the mask to body
        $('body').append('<div id="mask"></div>');
        $('#mask').fadeIn(300);

        return false;
    });

    //--------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------//

    $("#btnLogIn").click(function (event) {
        $('#usuario').focus();
    });

    // Validación de Formulario de Login //
    $("#btnIngresar").click(function (event) {

        jQuery.validator.addMethod("alfanumerico", function (value, element) {
            return this.optional(element) || /^[\w]*$/.test(value);
        }, "Solo se aceptan caracteres alfanuméricos");

        $("#frmLogin").validate({
            errorPlacement: function (error, element) {
                error.insertAfter(element);
                error.css("margin", "0 0 0 0");
            },
            rules: {
                usuario: {
                    required: true,
                    alfanumerico: true
                },
                password: {
                    required: true,
                    alfanumerico: true
                }
            },
            messages: {
                usuario: {
                    required: "Debe ingresar el usuario"
                },
                password: {
                    required: "Debe ingresar el password"
                }
            },
            submitHandler: function (form) {
                var data = '{"nombre":"' + $("#usuario").val() + '", "password":"' + $("#password").val() + '"}';
                var resultado = verificarUsuario(data);

                if (resultado == true) {
                    mostrarAlert($("#usuario").val() + '...', 'Bienvenido al sitio', 'alert-success');
                    comprobarLogIn();
                    cerrarPopUp();
                    var Pagina = window.location.href.substring(window.location.href.lastIndexOf("/") + 1, window.location.href.indexOf(".aspx"));
                    if (Pagina == "Busqueda") {
                        actualizarBarraAcumuladora();
                    }
                }
                else {
                    mostrarAlert('Error...', 'Usuario y/o password incorrectos', 'alert-error');
                }

            }
        });
    });

    // Validación de Formulario de Registro //
    $("#btnRegistrar").click(function (event) {
        jQuery.validator.addMethod("unaMayuscula", function (value, element) {
            return this.optional(element) || /[A-Z]{1}/.test(value);
        }, "Debe ingresar al menos una mayúscula");

        jQuery.validator.addMethod("tresNumeros", function (value, element) {
            return this.optional(element) || /[0-9]{3}/.test(value);
        }, "Debe ingresar al menos tres números");

        jQuery.validator.addMethod("alfanumerico", function (value, element) {
            return this.optional(element) || /^[\w]*$/.test(value);
        }, "Solo se aceptan caracteres alfanuméricos");

        $("#frmRegistro").validate({
            errorPlacement: function (error, element) {
                error.insertAfter(element);
                error.css("margin", "0 0 0 0");
            },
            rules: {
                usuarioReg: {
                    required: true,
                    alfanumerico: true,
                    minlength: 8,
                    maxlength: 30
                },
                passwordReg1: {
                    required: true,
                    minlength: 8,
                    maxlength: 15,
                    unaMayuscula: true,
                    tresNumeros: true,
                    alfanumerico: true
                },
                passwordReg2: {
                    equalTo: "#passwordReg1"
                },
                email: {
                    required: true,
                    email: true,
                    maxlength: 35
                }
            },
            messages: {
                usuarioReg: {
                    required: "Debe ingresar un nombre de usuario",
                    minlength: "El usuario debe tener al menos {0} caracteres",
                    maxlength: "Ha superado el límite de {0} caracteres"
                },
                passwordReg1: {
                    required: "Debe ingresar un password",
                    minlength: "El password debe tener al menos {0} letras",
                    maxlength: "Ha superado el límite de {0} caracteres"
                },
                passwordReg2: {
                    equalTo: "El password ingresado no coincide con el anterior"
                },
                email: {
                    required: "Debe ingresar una direccion de email válida",
                    email: "Debe ingresar una direccion de email válida",
                    maxlength: "Ha superado el límite de {0} caracteres"
                }
            },
            submitHandler: function (form) {
                var data = '{"usuario":"' + $("#usuarioReg").val() + '", "password":"' + $("#passwordReg1").val() + '", "email":"' + $("#email").val() + '"}';
                var datos = llamarServicio("POST", "/Servicios/servicio.asmx/registrarUsuario", data, false, "application/json; charset=utf-8", "json");
                //Agregado 1-12
                if (datos == null) {
                    mostrarAlert('Error... ', 'Hubo un error en el servidor al intentar registrar el usuario.', 'alert-error');
                }
                /**************/
                else {
                    mostrarAlert('Registrar Usuario... ', datos, 'alert-info');
                }
                cerrarPopUp();

            }
        });
    });

    // Confirmación de cierre de sesión //
    $("#btnConfirmarSalir").click(function (event) {
        cerrarSesion();
        cerrarPopUp();
        comprobarLogIn();
        var Pagina = window.location.href.substring(window.location.href.lastIndexOf("/") + 1, window.location.href.indexOf(".aspx"));
        if (Pagina == "MiPerfil") {
            window.location.href = "/Paginas/Home.aspx";
        }
        if (Pagina == "Busqueda") {
            actualizarBarraAcumuladora();
            if ($(".filtroUser").html() != null) {
                $(".filtroUser").parent().remove();
                window.location.href = redireccionarBusqueda('user', 'False');
            }
        }
    });

});     
//Fin $(document).ready

// Función para verificar usuario y password contra BD //
function verificarUsuario(data) {
    var datos = llamarServicio("POST", "/Servicios/servicio.asmx/VerificarUsuario", data, false, "application/json; charset=utf-8", "json");
    return datos;//True o False//
}

function comprobarLogIn() {
    var datos = llamarServicio("POST", "/Servicios/servicio.asmx/comprobarSesion", "", false, "application/json; charset=utf-8", "json");

    if (datos == true) {
        //Cambiamos texto del botón Ingresar y el href para que abra el Form correspondiente//
        $("#btnLogIn").text("Salir");
        $("#btnLogIn").attr("href", "#logout-box");

        //Obtenemos Usuario//
        datos = llamarServicio("POST", "/Servicios/servicio.asmx/ObtenerUsuario", "", false, "application/json; charset=utf-8", "json");

        //Agregado 1-12
        if (datos == null) {
            mostrarAlert('Error... ', 'Hubo un error en el servidor al intentar obtener el usuario.', 'alert-error');
            return false;
        }
        /**************/
        else {
            //Agregamos Nombre del usuario conectado como link para acceder a la página MiPerfil//
            $("#liUsuario").remove();

            $("#menuEncabezado").append('<li id="liUsuario"><a id="btnUsuario" href="#" target="_blank">' + datos.Nombre + '</a></li>');
            
            $("#liUsuario").append('<ul id="menuDropdown" class="toggler"><li class="ui-state-disabled menuDropdownTitulo">Agregar</li><li><a href="#Pelicula-box" class="menuAgregar">Pelicula</a></li><li><a href="#Libro-box" class="menuAgregar">Libro</a></li><li><a href="#Teatro-box" class="menuAgregar">Obra</a></li><li><a href="#Restaurant-box" class="menuAgregar">Restaurant</a></li></ul>');
            
            $('#menuDropdown').menu();

            $("#liUsuario").mouseenter(function () {
                $('#menuDropdown').fadeIn('slow', function () {});
            });

            $("#liUsuario").mouseleave(function () {
                $("#menuDropdown").fadeOut('slow', function () { });
            });

            $(".menuAgregar").click(function (event) {
                eval("insertarModal('" + $(this).attr('href') + "')");
            });
            $("#btnUsuario").click(function (event) {
                var datos = llamarServicio("POST", "/Servicios/servicio.asmx/ObtenerUsuario", "", false, "application/json; charset=utf-8", "json");

                if (datos == null) {
                    $("#btnUsuario").attr("target", "_self");
                    $("#btnUsuario").attr("href", "#");
                    comprobarLogIn();
                }
                else
                    $("#btnUsuario").attr("href", "/Paginas/MiPerfil.aspx");
            });

            //Limpiamos campos de Log in//
            $("#usuario").val("");
            $("#password").val("");

            //Habilitamos botones para editar Items//
            $(".divInsertarItem, .divAgregarComentario").css("display", "inline-block");
            var Pagina = window.location.href.substring(window.location.href.lastIndexOf("/") + 1, window.location.href.indexOf(".aspx"));
            if (Pagina == "DetalleItem") {
                comprobarPropietarioItemActual();
            }
            return true;
        }
    }
    else {
        //Cambiamos texto del botón Ingresar y el href para que abra el Form correspondiente//
        $("#btnLogIn").text("Ingresar");
        $("#btnLogIn").attr("href", "#login-box");

        //Quitamos Nombre del usuario con el link para acceder a la página MiPerfil//
        $("#liUsuario").remove();

        //Deshabilitamos botones para editar Items//
        $(".divInsertarItem, .divEliminarItem, .divModificarItem, .divAgregarComentario").css("display", "none");
        return false;
    }
}

function cerrarPopUp() {
    $('#mask , .login-popup').fadeOut(300, function () {
        $('#mask').remove();
    });
}

function cerrarSesion() {
    llamarServicio("POST", "/Servicios/servicio.asmx/cerrarSesion", "", false, "application/json; charset=utf-8", "json");
    //Agregado 1-12
    mostrarAlert('Usuario... ', 'Se ha deslogueado de la aplicación.', 'alert-info');
    /**************/
}